#include "RevanClient.h"
#include "config.h"
#include <string>

using namespace std;

#include <iostream>
#if WIN32
WSADATA info;
void startWSA()//Inicializacion de la libreria de windows
{
	if (WSAStartup(MAKEWORD(2,0), &info) != 0)
	{
		printf ("Fue imposible inicializar Winsock\n");
		exit(-1);
	}
}

void closeWSA()
{
	WSACleanup();//Cierra la libreria
}
#endif



using namespace std;

RevanClient::RevanClient(int port,string serverIP):serverPort(port)
{
	serverAdress = serverIP;
}



RevanClient::~RevanClient()
{
}




void RevanClient::createSocket()
{
	if(-1==(sockfd=socket(AF_INET,SOCK_STREAM,0)))
	{
		cout<<"Error: El socket no puedo ser creado"<<endl;
		exit(1);
	}
	server.sin_addr.s_addr = inet_addr(serverAdress.c_str());
	server.sin_family = AF_INET;
	memset(&(server.sin_zero),0,8);
	server.sin_port = htons(serverPort);
}


void RevanClient::Start()
{
	#if WIN32
	startWSA();
	#endif
	createSocket();
}

void RevanClient::Close()
{
	shutdown(sockfd,2);
	#if WIN32
	closeWSA();
	#endif
}

void RevanClient::Connect()
{
	
	if(-1==connect(sockfd,(struct sockaddr*)&server,sizeof(struct sockaddr_in)))
	{
		cout<<"Error: no se pudo establecer la conexion"<<endl;
	}
}

void RevanClient::sendMsg(string msg)
{
	send(sockfd,msg.c_str(),msg.length(),0);
}

string RevanClient::receiveMsg()
{
	string strMsg;
	char msg[MSGSIZE];
	numbytes = recv(sockfd,msg,sizeof(msg),0);
	strMsg = msg;
	return strMsg;

}

